func findPeakElement(nums []int) int {
	n := len(nums)

	// 基于下表i，返回nums[i]的数值
	get := func(i int) int {
		if i == -1 || i == n {
			return math.MinInt64
		}
		return nums[i]
	}

	// 二分查找的模板，确定左边界和右边界
	left, right := 0, n-1
	for {
		// 取中间值
		mid := (left + right) / 2
		// 二分查找变种，如果取到值改成如果取到最大值
		if get(mid-1) < get(mid) && get(mid) > get(mid+1) {
			return mid
		}
		if get(mid) < get(mid+1) {
			// 果nums[i]<nums[i+1]，抛弃[l, i] 的范围，在[i+1, r]的范围里面查找
			left = mid + 1
		} else {
			// 如果nums[i]>nums[i+1], 抛弃[i,r]的范围，在[l, i-1]的范围里面查找
			right = mid - 1
		}
	}
}